package com.itnoob.domain;

import com.itnoob.pay.OrderState;
import com.itnoob.pay.impl.PaidState;


/**
 * 定义一个订单类,用于维护当前的订单状态对象
 * @author zhoujun
 * @date 2025/3/19 21:55
 */
public class Order {
    //声明一个私有的订单状态对象
    private OrderState  orderState;

    /**
     * 构造方法:初始化订单状态对象为已支付状态
     */
    public Order() {
        this.orderState = new PaidState();
    }

    /**
     * 获取当前订单状态
     * @return
     */
    public OrderState getOrderState() {
        return orderState;
    }

    public void setOrderState(OrderState orderState) {
        this.orderState = orderState;
    }

    /**
     * 定义一个代理方法,调用订单状态的支付行为
     */
    public void pay(){
        orderState.pay(this);
    }


    /**
     * 定义一个代理方法,调用订单状态的发货行为
     */
    public void ship(){
        orderState.ship(this);
    }

    /**
     * 定义一个代理方法,调用订单状态的收货行为
     */
    public void receive(){
        orderState.receive(this);
    }

}
